<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
</head>

<body>
    <script>
        // let
        // 1. 用let声明的变量，不能重复声明
        // 2. 具有块级作用域
        // 3. 没有变量提升
        // 4. 和window没关系

        // const
        // 1. 用于声明常量，常用的特点是值不能改变
        // 2. 声明常量的时候，必须给初始值
        // 3. 具有块级作用域
        // 4. 没有变量提升
        // 5. 和window没关系

        // 箭头函数
        // 1. 定义  (参数列表) => {函数体}
        // 2. 形参只有一个的情况，小括号可以省略
        // 3. 函数体只有一行代码，大括号可以省略，并且表示return函数体的结果
        // 4. 内部没有arguments
        // 5. 内部没有自己的this，this指向外部作用域的this（涉及到this都比较难理解）
        // - 按照作用域链去查找this
        // 6. 不能作为构造函数

        // 函数参数默认值
        // 1. 定义函数的时候，可以为形参设置默认值  function (x, y = 2) {}
        function abc(x = 2, y) {
            console.log(x + y);
        }
        abc(undefined, 4); // undefined表示没有给x传递值，x使用默认值

        // 函数剩余参数
        // 1. 定义函数的时候，可以使用 ...val ，接收剩余的实参
    </script>
</body>

</html>